package global

import (
	"sync"
	"time"

	"gitee.com/night-tc/gobige/msgdef"
	"gitee.com/night-tc/gobige/threads"
)

/*
服务器级状态
*/
type IsrvInst interface {
	// 操作子协程的管理器
	GetThreadGo() *threads.ThreadGo
	//获取服务器当前繁忙状态0-100
	GetLoad() int
	//Loop时的时间
	GetNowTime() time.Time
	//服务器是否可用
	IsSrvValid() bool
	// //服务器不可用的时候，的处理函数
	// HandlerSrvInvalid(eid uint64)
	//获取新的唯一ID
	GetNewEID() uint64
	// 获取等待回复的map
	GetWaitMap() *sync.Map

	// 发消息给其他服务器的对象
	PostMsgToEntity(srvid, spid, eid uint64, msg msgdef.IMsg) (err error)
	// 通过目标服务器发消息给客户端
	PostMsgToClient(srvid, spid, eid uint64, msg msgdef.IMsg) (err error)
	// 通过目标服务器发消息给客户端
	PostMsgToClientBuf(srvid, spid, eid uint64, data []byte) (err error)
	// 发消息到目标服务器
	PostSess(srvid uint64, msg msgdef.IMsg)

	// 主协程调用
	Run()
	// //获取服务器级的协程管理器
	// GetThread() *threads.ThreadGo

}
